<?php
// Подключение формы
require_once('edit_form.php');

// Подключение стилей
$DOF->modlib('nvg')->add_css('im', 'guestbook', '/style/style.css');

// Навигация
$DOF->modlib('nvg')->add_level($DOF->get_string('title', 'guestbook'), $DOF->url_im('guestbook', '/edit.php'));

$customdata      = new stdClass();
$customdata->dof = $DOF;

// созидание форм(ы) 
$cform = new dof_im_guestbook_edit_form($DOF->url_im('guestbook', '/edit.php'), $customdata);
$eform = new dof_im_guestbook_edit_form($DOF->url_im('guestbook', '/edit.php'), $customdata);

// получить все сообщения
$data = $DOF->storage('messages')->get_messages();

// Получение id сообщения
$messageid = optional_param('messageid', null, PARAM_INT);

$toform = array();
$toedit = array();

$main_url = new moodle_url('index.php');
$this_url = new moodle_url('edit.php');


// process() 
if ( $eform->is_cancelled() || $cform->is_cancelled() )
{
    redirect($main_url);
} else if ( optional_param('edparam', null, PARAM_TEXT) === 'Edit' )
{

    // КОСТЫЛЬ
    foreach ( $data as $d )
    {
        if ( $d->id == $messageid )
        {
            $toedit['id']      = $messageid;
            $toedit['type']    = 'Edit';
            $toedit['name']    = $d->name;
            $toedit['time']    = $d->time;
            $toedit['message'] = $d->message;
        }
    }

    $eform->set_data($toedit);
    view($eform, $DOF);
} else if ( optional_param('edparam', null, PARAM_TEXT) === 'Comment' )
{

    // КОСТЫЛЬ
    foreach ( $data as $d )
    {
        if ( $d->id == $messageid )
        {
            $touse['id']       = $messageid;
            $touse['type']     = 'Comment';
            $toform['id']      = $messageid;
            $toform['name']    = $d->name;
            $toform['time']    = $d->time;
            $toform['message'] = $d->message;
        }
    }

    $cform->set_data($touse);
    view($cform, $DOF, $toform);
} else if ( ($fromform = $eform->get_data()) && ($fromform->type == 'Edit') )
{
    $DOF->storage('messages')->update_message($fromform);
    redirect($main_url);
} else if ( ($fromform = $cform->get_data()) && ($fromform->type == 'Comment') )
{
    $DOF->storage('comments')->set_comment($fromform->name, $fromform->message, time(), $fromform->id);
    redirect($main_url);
}

/**
 * Отображение футера, хедера, форм и сообщений с комментариями
 * 
 * @param form $mform - форма для отображения
 * @param obj $dof - сервис-локатор
 * @param obj $toform  - данные для формы
 */
function view($mform, $dof, $toform = null)
{
    // вывод header
    $dof->modlib('nvg')->print_header(NVG_MODE_PORTAL, 'left');

    if ( !empty($toform) )
    {
        show($toform, $dof);
    }

    $dof->modlib('widgets')->print_box_start('form_wrap');
    $mform->display();
    $dof->modlib('widgets')->print_box_end();

    // вывод footer
    $dof->modlib('nvg')->print_footer(NVG_MODE_PORTAL, 'right');
}

/**
 * Отображение сообщений и комментариев
 * 
 * @param type $toform - данные для отображения
 * @param obj $dof - сервис-локатор
 */
function show($toform, $dof)
{
    
    // Получить все комментарии по id сообщения
    $data_c = $dof->storage('comments')->get_comments($toform['id']);

    $dof->modlib('widgets')->print_box_start("wrap_post");
    $dof->modlib('widgets')->print_box(
            $toform['name'], 'name'
    );
    $dof->modlib('widgets')->print_box(
            date("H:i:s", $toform['time']), 'time'
    );
    $dof->modlib('widgets')->print_box(
            $toform['message'], 'message'
    );
    $dof->modlib('widgets')->print_box_end();

    foreach ( $data_c as $num => $comment )
    {
        $dof->modlib('widgets')->print_box_start('wrap_comment');
        $dof->modlib('widgets')->print_box(
                $comment->name, 'name'
        );
        $dof->modlib('widgets')->print_box(
                date("H:i:s", $comment->time), 'time'
        );
        $dof->modlib('widgets')->print_box(
                $comment->comment, 'message'
        );
        $dof->modlib('widgets')->print_box_end();
    }
}

?>